# 脚本作用：批量给文件名添加前缀和后缀
# 版本：3.0


# ==特性==
# 支持直接获取视频时长


$Date = get-date -format "yyyy.MM.dd"
$Postfix = ".mp4"
$Address = read-host "请输入目标文件所在路径"

echo ""


$Shell = New-Object -ComObject Shell.Application

(*
 脚本作用：批量给文件名添加前缀和后缀
 版本：3.0
*)


if ($Postfix -eq ".mp4") {
  ls $Address -i *$Postfix -r | % {
    $Name = [System.IO.Path]::GetFileNameWithoutExtension($_.FullName)

    # 获取视频时长
    $Folder = $Shell.Namespace($_.DirectoryName)
    $File = $Folder.ParseName($_.Name)
    $Duration = $Folder.GetDetailsOf($File, 27).Split(':')
    $Times = $([int]$Duration[1]*60+[int]$Duration[2])

    # 匹配日期是为了排除重复命名
    if ( ($_.Name -match $Date) -ne "True") {
      Rename-Item $_.FullName -NewName $Date-$Name-$Times"s"-"嘉铭"$Postfix
    } else {
      Write-Host "所有文件名在此前已经格式化过一次`n" -NoNewLine
    }
  }
} else {
  echo "此时程序设定的后缀为"$Postfix"，应该为.mp4"
}


echo "格式化命名完成！"
pause